﻿
Namespace HybrisItems.Model

    ''' <summary>
    ''' Specifies further properties of an attribute which can be redeclared at other extensions.
    ''' </summary>
    ''' <remarks></remarks>
    <Serializable()> _
    Public Class ModifiersModel

        ''' <summary>
        ''' Defines if this attribute is readable (that is, if a getter method will be generated). 
        ''' Default is 'true'. The visibility of the getter depends on the value of the private attribute.
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Property Read As Boolean

        ''' <summary>
        ''' Defines if this attribute is readable (that is, if a getter method will be generated). 
        ''' Default is 'true'.	The visibility of the getter depends on the value of the private attribute.
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Property Write As Boolean

        ''' <summary>
        ''' Defines if this attribute is searchable by a FlexibleSearch. 
        ''' Default is 'true'. Attributes with persistence type set to 'jalo' can not be searchable.
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Property Search As Boolean

        ''' <summary>
        ''' Defines if this attribute is mandatory or optional. 
        ''' Default is 'true' for optional. Set to 'false' for mandatory.
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Property [Optional] As Boolean

        ''' <summary>
        ''' Defines the Java visibility of the generated getter and setter methods for this attribute. 
        ''' If 'true', the visibility modifier of generated methods is set to 'protected'; if 'false', 
        ''' the visibility modifier is 'public'. Default is 'false' for 'public' generated methods. 
        ''' Also, you will have no generated methods in the ServiceLayer if 'true'.
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Property [Private] As Boolean

        ''' <summary>
        ''' If 'true', the attribute will only be writable during the item creation. 
        ''' Setting this to 'true' is only useful in combination with write='false'.	Default is 'false'.
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Property Initial As Boolean

        ''' <summary>
        ''' Defines if this attribute is removable. Default is 'true'.
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Property Removable As Boolean

        ''' <summary>
        ''' Defines if the assigned attribute value only belongs to the current instance of this type. Default is 'false'.
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Property PartOf As Boolean

        ''' <summary>
        ''' If 'true', the value of this attribute has to be unique within all instances of this type. 
        ''' If there are multiple attributes marked as unique, then their combined values must be unique. 
        ''' Will not be evaluated at jalo layer, if you want to manage the attribute directly using jalo layer you have to ensure uniqueness manually. Default is 'false'
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Property Unique As Boolean

        ''' <summary>
        ''' If 'true' the attribute value will be stored in the 'global' property table, 
        ''' otherwise a separate column (inside the table of the associated type)will be created for storing its values. Default is 'false'.
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Property DontOptimize As Boolean

        ''' <summary>
        ''' If 'true', the attribute value will be stored in an encrypted way. Default is 'false'.
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Property Encrypted As Boolean

    End Class

End Namespace